% ----------------------------------------------------------------------- %
% Arquivo: diffserv.tex
% ----------------------------------------------------------------------- %

\section{DiffServ}
\label{c_cap_diffserv}

O DiffServ (Differentiated Services), RFC 2475 \cite{RFC2475}, que define uma arquitetura para implementação escalar do DiffServ ou ainda Serviços Diferenciados. O Diffserv controla a agregação de tráfego através do campo DS (DSCP - Differentiated Services Code Point) do cabeçalho IP, sem a necessidade de manter o estado e a sinalização do fluxo em todo roteador.

O DiffServ é modelado com o intuito de agregar fluxos individuais em classes, podendo assim, operar em enlaces de grande porte. O DiffServ trabalha com o contexto de domínio. Um domínio DiffServ contém roteadores de borda e de núcleo. Na borda de um domínio DiffServ, estão grande parte das operações de controle e principalmente classificação e condicionamento de tráfego.

Um fluxo de tráfego pode ser considerado como um pacote associado a um fluxo gerado por um usuário de serviço. Uma classe de tráfego é considerada um grupo de fluxos associados a critérios comuns. A classe deve conter o tráfego de tráfego com características semelhantes e requisitos de desempenho.

Na borda de um domínio DiffServ, o roteador irá receber fluxos marcados com sinalização de QoS, classificá-lo e condicionar este fluxo em classes para encaminhar ao destino, passando por dentro deste domínio. No núcleo do Domínio, os roteadores adaptados a trabalharem com o DiffServ, encaminham o fluxo conforme tratamento, prioridade e roteamento.

Em cada roteador existem entidades DiffServ, o PHB (Per Hop Behavior), que processam estas classes conforme gerenciamento para tratamento do fluxo. Os Fluxos dentro do domínio DiffServ é definidos em 3 classes básicas: Melhor esforço (Best Effort), encaminhamento acelerado (EF - expedited forwarding) e encaminhamento assegurado (AF - Assured forwarding).

O DiffServ distingui o tráfego que está entrando nas bordas do domínio através do campo DSCP do pacote IP.  O bytes DS (Dentro do DSCP), que usa o espaços do octeto TOS (Type of Service) no cabeçalho de IPv4 e o octeto da classe de tráfego (Traffic Class) no cabeçalho IPv6. O PHB faz o tratamento através da marcação DSCP \textit{DiffServ Code Point} dos pacotes IP \cite[RFC2474]{RFC2474}. A IETF manteve o padrão do ToS para o DSCP para compatibilidade entre os protocolos.

A arquitetura DiffServ parte do princípio que domínios adjacentes tenham um acordo de serviços entre os mesmos. Este acordo denomina-se SLA (Service Level Agreement). O SLA determina as classes de serviços suportadas e a quantidade de tráfego possível entre os domínios \cite[RFC2475]{RFC2475}.

A configuração e a interação entre o condicionamento de tráfego e os nós do núcleo devem ser gerenciados por controles administrativos e requer operação entre os protocolos das entidades. Serviços diferenciados dependem de mecanismos de alocação de recursos. Dentro deste contexto, uma solução apresentada para o gerenciamento dinâmico, é o RM DiffServ. O modelo RM Diffserv é uma proposta para o gerenciamento de domínios DiffServ, que permite a alocação eficiente de recursos em um domínio. Esse modelo será discutido mais tarde.

\subsubsection{Campo DSCP e as classes de serviço}
O Diffserv trabalha utilizando os seis primeiros bits do campo DSCP, antigo ToS, do cabeçalho IP. O campo DSCP é composto pelos bytes do DSCP mais o campo CU. O valor dos bits CU são ignorados pelos nós dos serviços diferenciados quando o PHB recorrer a este pacote recebido.
A estrutura é apresentada abaixo:

\begin{center}
0 \hspace{0,2cm} 1 \hspace{0,2cm} 2 \hspace{0,2cm} 3 \hspace{0,2cm} 4 \hspace{0,2cm} 5 \hspace{0,2cm} 6 \hspace{0,2cm} 7

+---+---+---+---+---+---+---+---+

|     \hspace{1cm}    DSCP   \hspace{1cm}       |  CU   |

+---+---+---+---+---+---+---+---+

\end{center}

 DSCP: Differentiated Services Code Point

 CU: Atualmente inutilizado

Os DSCP tem valores padrão conforme classes aplicadas, contudo, o mapeamento pode ser configurável, porém se isso for feito, os valores dos campos devem necessariamente implementados no próximo nó e subsequentes enquanto desejar-se que o PHB interprete a marcação.

Quando nenhum acordo está nas regras em vigor, presume-se que pacotes pertencem a um PHB "padrão". O encaminhamento comum é o melhor esforço. Como cada PHB pode ter comportamento diferente, um pacote inicialmente marcado para o comportamento Padrão pode ser re-marcado com outro codepoint(DSCP). Esta situação também esta presente nos serviços entre domínios (SLA), onde o tráfego passa de uma fronteira para outro domínio DiffServ. Para que a marcação seja encaminhada através de um diferente PHB dentro desse domínio, alguns acordos são necessários.

Outra classe utilizada, é a EF(expedited forwarding), que têm uma baixa perda, baixa latência, baixo jitter e banda garantida fim a fim. Funciona como uma linha virtual e utilizado em situações em que a rede está saturada com alto tráfego e precisa-se de banda para determinada aplicação. O tráfego EF recebe a taxa necessária independente da intensidade de tráfego do nó.

O PHB AF (Assured forwarding) define quatro níveis de prioridade para manipulação do tráfego dentro da rede e é baseado em duas situações: Prioridade de transmissão e probabilidade de descarte. O PHB AF é uma maneira de oferecer diferentes níveis de encaminhamento assegurado de pacotes IP para o Domínio DiffServ.
O PHB Assured Forwarding (AF) encaminha pacotes em prioridades diferentes e estas classes são independentes, ou seja, dentro da classe, um pacote tem diferentes níveis de tratamento e descarte. Todavia, as ações de gerenciamento de tráfego não podem reordenar os pacotes por micro fluxo.